/**
 * @Author       : Hejh(3010733382@qq.com)
 * @Version      : V1.0
 * @Date         : 2024-01-11 11:17:04
 * @Description  : 存储在数据库中的系统配置，便于管理员修改并持久化保存
 */

const SystemOption = require('@/models/systemOption')
const { createReactive } = require('./reactive')
const config = {
  companyName: '我的网盘', // 产品名称
  companySubName: '产品副标题', // 产品副标题
  ingoreSources: '.git', // 忽略文件
  newUserDefaultSources: '我的音乐,我的图片,我的文档', // 新用户默认创建文件夹
  dataFormat: 'YYYY-MM-DD', // 全局日期格式
  pwdLock: '1', // '密码多次错误锁定',
  loginValidateCode: '1', // '登录需要验证码',
  msgValidateCode: '1', //'登录需要短信验证码',
  pwdLevel: '2', //'密码强度，0-无限制，1-6位以上包含数字和密码，2-6位以上包含数字和大小写字母',
  userRegister: '1', //'用户注册功能，0-关闭，1-开启'
  userRegisterCheck: '0', // 用户注册审核
  chunkSize: '20971520', // '分片大小，单位mb',
  uploadThreadNum: '10', // '上传线程数量',
  requestRetryNum: '5', // '上传重试次数',
  defaultRoleId: '3', // 默认系统角色ID
  defaultSizeMax: '10737418240', // 默认用户空间容量
  depSizeMax: '107374182400', // 部门默认空间容量
  defaultDepInfo: '', // 新注册用户默认加入的部门
  isLinkShow: '1', // 是否展示外链
  isLink: '1', // 是否开启外链共享
  isLinkPwdAllowEmpty: '1', // 是否允许外链密码为空
  isLinkAllowNotLogin: '1', // 是否允许未登录用户访问
  isLinkPackDownload: '1', // 外链是否开启打包下载
  sourceMd5Show: '1', // 是否显示md5
  thirdPartLogin: 'qq,weixin,github', // 三方登录支持
  uploadIngoreSources: '', // 上传忽略文件
  emailType: '0', // 邮箱类型
  emailServer: '', // 邮件服务器地址
  emailAddr: '', // 发件地址
  emailEncrpyType: '0', // 加密类型
  emailAuthPwd: '' // 密码
}

const p = createReactive(config)

/**
 * @author: Hejh(3010733382@qq.com)
 * @description: 修改当前导出的文件配置value
 * @param {*} key 系统配置-key
 * @param {*} value 系统配置-value
 */
const setConfig = (key, value) => {
  module.exports.config[key] = value
}

/**
 * @author: Hejh(3010733382@qq.com)
 * @description: 获取数据库中的系统配置
 */
const getInitConfig = async () => {
  const opts = await SystemOption.findAll()
  for (let i = 0; i < opts.length; i++) {
    let item = opts[i]
    setConfig(item.key, item.value)
  }
}

getInitConfig()

module.exports = {
  config: p, // 代理对象
  setConfig,
  system: config // 实际对象
}
